Article History
 
 
 
Discussion
 
3300 views
 
53% damifortune
xg (format)
 

Yamaha XG
 

 

 
Token:
xg
 
Point Type:
 
File Types:
 
Entry Count:
228
 
Max Filesize:
12.5mb
 
Description:
Yamaha XG (eXtended General MIDI) is a set of proprietary extensions to the GM MIDI protocol standard, introduced in 1994.
::|CONTENTS
  1. I have never done this format
  2. What can I do with XG over MSGS?
  3. Restrictions on submit
  4. CC Controllers
  5. Effects
  6. SysEx Messages
  7. Tools for creation
  8. Tools for playback
  9. Examples of XG music
  10. See also + other links
Yamaha's XG (eXtended General MIDI) is a set of proprietary extensions to the GM MIDI protocol standard. Introduced in 1994, it sought to improve on GM's features by defining more instruments, implementing audio processing effects, and other commands not available in GM-only synths. Think of it as proprietary MIDI Plus!

This article is intended to cover XG in the scope of BotB's format, which is restricted to only S-YXG50 or MU 50 due to many XG synths having different/upgraded sounds and features. S-YXG50 is the free and easily available option for XG, so the sounds available to S-YXG50 are the focus of the BotB format. S-YXG50 only supports a single MIDI input port and thus is a 16-part (channel) synth, just like good old MSGS.

XG itself comprises many different physical and software synth implementations, all of which have their own features, effects and soundsets, but most of them would be unsuitable for BotB due to not being free. You can check out a full list of XG-supported hardware units here
and software synths here
.

I have never done this format



You have some options to make XG MIDIs!

1) use the SYXG50 VST
in your DAW of choice, set up in a similar manner to how you'd set up MSGS MIDI, C700 VST, or MuntVSTi for MT-32; run 16 MIDI Out channels through it.
2) use dedicated software such as Yamaha's XGWorks
(for easiest control over XG-specific effects).
3) use another MIDI sequencer such as Sekaiju
or Domino
; others listed in the Software section below.
4) set up your DAW of choice to send 16 channels of MIDI to a Yamaha MU50 (make sure each channel outputs to only one number channel, 1-16)

What can I do with XG over MSGS?



As mentioned, XG offers many more options for proud MIDI warriors than MSGS MIDI does:

Bank Control: Several variants of each patch are available to use, for a sum total of 480 melodic voices, 9 drumkits and 2 SFX banks! Unlike MSGS, you don't need to use SysEx to access them; instead use CC32 followed by a Program Change event. A full list of available XG patches, and the CC32 value ("Bank LSB") required, can be found here
! CC0 also does some Bank Control for SFX and drums.
>> See the full list of legal XG patches on BotB here.

More effects: Access some wonderful features like Portamento (CC65 off/on, CC5 duration control), Filters (CC71 resonant filter, CC74 lowpass filter), ADSR (CC72 release, CC73 attack), and many more!
>> See the full list of XG CCs below.

Global effects: In addition to coming with global Reverb and Chorus, XG lets you use SysEx messages to control additional effects like Flanger and Distortion (as well as apply changes to any of the global effects). Note that not all DAWs and sequencers support SysEx (*cough* FL Studio *cough*) so you may need to use an additional tool to manipulate this data, such as Bome SendSX
.
>> Read more about Effects in XG below and SysEx in XG below as well.

Restrictions on submit



BotB entries must only use S-YXG50 (or MU50)!!! Anything else might support more features than either or just have different sounds and may therefore be illegal.

Submissions - restricted to .mid, naturally - should be playable through either Falcosoft MIDI Player (setup guide here
) or SYXG50 VST itself.

Renders - S-YXG50 and the Yamaha MU50 are the only legal means.
It is worth mentioning that renders between the two will vary slightly, particularly in how they handle Velocity and Expression, as well has how many simultaneous CC commands can be utilized.

CC Controllers



CC controllers supported by XG include:

BANK CONTROL:
//Both types of Bank Control messages must be followed by a program change message, otherwise they have no effect

• CC 0 - Bank MSByte [Data range: 0:Normal 64:SFX voice 126:SFX kit 127:Drum]
• CC 32 - Bank LSByte (voice variation) [Data range: 0-127]

MODULATION AND PORTAMENTO:

• CC 1 - Modulation (Initialised to Vibrato Depth by default, different target set with SysEx)
• CC 5 - Portamento duration

DATA ENTRY:
//Used to provide the data for (N)RPN parametres to change

• CC 6 - Data Entry MSB
• CC 38 - Data Entry LSB

MISCELLANEOUS:

• CC 7 - Part volume
• CC 10 - Panpot
• CC 11 - Expression (Dynamic control of part's loudness mid-sequence. Use instead of CC 7 for creating short, dynamic volume variations)

• CC 64 - Sustain toggle (<64dec to disable)
• CC 65 - Portamento toggle (<64dec to disable)
• CC 66 - Sostenuto toggle (<64dec to disable)
• CC 67 - Soft Pedal toggle (<64dec to disable)

ADSR/FILTER CONTROL:
//This section doubles some of NRPNs in a more accessible form for the most used ADSR controls. It also reduces the MIDI data usage compared to NRPNs, making it a more appropriate choice for real-time manipulation from within the sequence.

• CC 71 - Resonant filter strength
• CC 72 - ADSR Release
• CC 73 - ADSR Attack
• CC 74 - Low-Pass filter cutoff

• CC 84 - Portamento Control

FX SEND CONTROL:

• CC 91 - FX Reverb Block Send
• CC 93 - FX Chorus Block Send
• CC 94 - FX Variation Block Send (System mode only, doesn't apply to IFX - see below)

NRPN Data Entry Incrementation/Decrementation:
//DATA byte of the midi message will be ignored

• CC 96 - Data Increment
• CC 97 - Data Decrement

NRPN (Non-registered parametre number) select:
//First send the NPRN MSB and LSB to select the control parametre, then set the value by Data Entry. Refer to the specification to see the full NRPN parametres table

• CC 98 - NRPN LSB
• CC 99 - NRPN MSB

RPN (Registered parametre number) select:
//Same procedure as with NRPNs applies

• CC 100 - RPN LSB
>> Pitch Bend Range: Set CC#100 to 0 along with CC#101 = 0 to control the Pitch Bend Range of the chosen channel using CC#6 - in our case for BotB's XG format, you can extend the range from a default +/- 1 octave to 2. Values 0-24 for CC#6 correspond to the maximum number of bendable semitones, with 12 being default. XG responds to pitch events up to +/- 1200 cents, which is normally also one octave. This setting alters how a "cent" is interpreted by the synth, meaning -100 (down a semitone) will no longer be down a semitone, but potentially more (if CC#6 > 12) or less (if CC#6 < 12). Greater values than 24 for CC#6 remain at a bend range of 24.
>> Fine-tune: Set CC#100 to 1 along with CC#101 = 0 to control the fine-tune of the chosen channel using CC#6. A value of CC#6 = 64 is normal tuning; lower goes down to a maximum of 1 semitone and higher, conversely, goes up.
>> Base note: Set CC#100 to 2 along with CC#101 = 0 to control the base note of the chosen channel using CC#6. A value of CC#6 = 64 is once again default, 63 is down one semitone, etc.
• CC 101 - RPN MSB
>> Set to 0 along with the indicated values for CC#100 and CC#6 listed above to control pitch bend range, fine-tune and base note on a per-channel basis.

Channel Mode Messages:

• CC 120 - All Sound OFF {data range: 0) - cuts all sound immediately
• CC 121 - Reset All Controllers {data range: 0)
• CC 123 - All Notes OFF (data range: 0) - releases all notes

Effects



XG defines three types of effects that can be used to further shape the sound to your liking:

• [Required] System Effects: These are Reverb and Chorus and are applied to all parts (using the same settings - there's only one slot per each of them and all parts (channels) send to the same System FX block. You can alter the signal send level of each part independently to control the intensity of the effect on a per-channel basis.

• [Required] Variation Effects (VFX) - at least one slot per synth is required by specification. The effect type (i.e. Distortion, Flanger, etc.) and all parametres of VFX are freely configurable by the user through SysEx messages. Unique attribute of VFX is that they can be set to function either as System Effect (see above) or Insert Effect (IFX) - refer to the description of IFX below for details. Default mode for VFX is Insert.

• [Optional] Insert Effects (IFX): These effect blocks are assignable via SysEx messages, ONE effect per SINGLE channel at a time. These are optional in XG, so it's safer to assume that the target synth doesn't implement them, for maximum compatibility unless you're targeting a specific XG device. S-YXG50 used on BotB sadly doesn't support any IFX.

The easiest way to access and edit FX and their settings is to use Yamaha's XG-ready sequencers with visual editors like XGWorks, but you can always control it manually using SysEx messages. Refer to the XG Specification documentation for details (linked at the bottom).

SysEx Messages



You can control most of the synth's parameters by SysEx messages. SysEx DATA always begins with 0xF0 and is terminated with 0xF7. Any synth-specific data goes inbetween.

An example message might look like this:

XG System ON: F0 43 10 4C 00 00 7E 00 F7 [hex] - resets the synth and switches it into XG mode. This is not required, but does simplify the process for playback if someone forgets to put their synth or player in the correct mode.

Message breakdown:
11110000 F0 Exclusive status
01000011 43 YAMAHA ID
0001nnnn 1n Device Number
01001100 4C Model ID
00000000 00 Address High
00000000 00 Address Mid
01111110 7E Address Low
00000000 00 Data
11110111 F7 End of Exclusive

XG Universal Realtime System Volume: F0 7F 7F 04 01 11 [MM] F7 [hex], where MM is the volume MSB. Useful for master volume fades.

Message breakdown:
11110000 F0 - Exclusive status
01111111 7F - Universal Realtime ID
01111111 7F - Device ID
00000100 04 - Sub ID1
00000001 01 - Sub ID2
0lllllll ll - Master Volume LSB
0mmmmmmm mm - Master Volume MSB
11110111 F7 - End of Exclusive


Tools for creation



• Yamaha XGWorks (you can find it on XG Central
)
• Yamaha SOL (possible to find on Archive)
Sekaiju

• Domino Sequencer English translation

Frieve Music Studio

Bome SendSX
(SysEx scratchpad, useful for quick testing stuff, alternatively MIDIOX
also has such a feature but it's a part of a much more complex routing/monitoring program)
XG Manager
XG voice editor and bank manager for Windows.
QXGEdit
XG voice editor for Linux / Qtractor.
MIDI Espressivo
XG Voice editor & the probably the only tool to convert bitmap animation frames to "Display:bitmap" sysex. Just grab the data from the "sample.mid" file it saves to.

Tools for playback



S-YXG50 synthesiser VST - unofficial download here
(first link)
Falcosoft MIDI Player (Win)
for hosting the S-YXG50 VST (more advanced than SaviHost)
>> Follow XG-Central's Guide' for setting up the Falcosoft MIDI Player here
.
Foobar2000 (Win/Linux+WINE)
with the foo_midi plugin

>> Follow Yamaha S-YXG50 VSTi page for setting up the foo_midi component here
.
Octavia
This player does not produce sound or send midi to external devices, but rather plays midi data synced to recorded audio for embedding on a web page. It can simulate the LCD of an MU-series module, for viewing of voice states or embedded display:text or display:bitmap data during playback.

Examples of XG music



So, what can it actually do, and what does it sound like? Here are several examples of XG music, all rendered with S-YXG50:

Around 50 minutes of Yamaha's XG demo tracks
(YouTube video)
Pastel Reverie by Wally Chantek

XGroove by Yasutaka Nakata

Tenshi.mid

Cafe Jungle, produced by Yamaha MusicSoft Europe

Cop Out, produced by Yamaha MusicSoft Europe




List of legal XG patches
MIDI patches list
by MelonadeM (lists all available sounds for the XG format in the "S-YXG50" column, and the CC32 value ("LSB") required to get that sound)
MIDI (format)
MT32 (format)
C700 VST (if you are unsure how to set up a VST for MIDI, the C700 guide may help you)
S-YXG50 Data
- XG instrument map layout; in Japanese, but just the tables, so should be understandable even if you don't know the language.
S-YXG50 Guide
- General guide, published by Yamaha UK, contains instrument table.
Video introduction to XG synths by Speedy

loopMIDI
MIDI routing software - pretty much essential if you want to interface with S-YXG50 outside of a DAW. If you need a solution compatible with Windows XP MIDIYoke
has you covered.

 
C A T E G O R I E S
 
 
Battle Formats